// Copyright 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
document.createElement("canvas").getContext||(function(){
	var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){
		return this.context_||(this.context_=new H(this))
		}var L=Array.prototype.slice;function Y(b,a){
		var c=L.call(arguments,2);return function(){
			return b.apply(a,c.concat(L.call(arguments)))
			}
		}var M={
		init:function(b){
			if(/MSIE/.test(navigator.userAgent)&&!window.opera){
				var a=b||document;a.createElement("canvas");a.attachEvent("onreadystatechange",Y(this.init_,this,a))
				}
			},
		init_:function(b){
			b.namespaces.g_vml_||
			b.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML");b.namespaces.g_o_||b.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML");if(!b.styleSheets.ex_canvas_){
				var a=b.createStyleSheet();a.owningElement.id="ex_canvas_";a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}"
				}var c=b.getElementsByTagName("canvas"),d=0;for(;d<c.length;d++)this.initElement(c[d])
				},
		initElement:function(b){
			if(!b.getContext){
				b.getContext=X;b.innerHTML="";b.attachEvent("onpropertychange",Z);b.attachEvent("onresize",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+"px";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+"px";else b.height=b.clientHeight
					}return b
			}
		};function Z(b){
		var a=b.srcElement;switch(b.propertyName){
			case "width":a.style.width=a.attributes.width.nodeValue+"px";a.getContext().clearRect();
				break;case "height":a.style.height=a.attributes.height.nodeValue+"px";a.getContext().clearRect();break
				}
		}function $(b){
		var a=b.srcElement;if(a.firstChild){
			a.firstChild.style.width=a.clientWidth+"px";a.firstChild.style.height=a.clientHeight+"px"
			}
		}M.init();var N=[],B=0;for(;B<16;B++){
		var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)
			}function I(){
		return[[1,0,0],[0,1,0],[0,0,1]]
		}function y(b,a){
		var c=I(),d=0;for(;d<3;d++){
			var f=0;for(;f<3;f++){
				var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]=
				h
				}
			}return c
		}function O(b,a){
		a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_
		}function P(b){
		var a,c=1;b=String(b);if(b.substring(0,3)=="rgb"){
			var d=b.indexOf("(",3),f=b.indexOf(")",d+
				1),h=b.substring(d+1,f).split(",");a="#";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)=="a")c=h[3]
				}else a=b;return{
			color:a,
			alpha:c
		}
		}function aa(b){
		switch(b){
			case "butt":return"flat";case "round":return"round";case "square":default:return"square"
				}
		}function H(b){
		this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b;
		var a=b.ownerDocument.createElement("div");a.style.width=b.clientWidth+"px";a.style.height=b.clientHeight+"px";a.style.overflow="hidden";a.style.position="absolute";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1
		}var i=H.prototype;i.clearRect=function(){
		this.element_.innerHTML=""
		};i.beginPath=function(){
		this.currentPath_=[]
		};i.moveTo=function(b,a){
		var c=this.getCoords_(b,a);this.currentPath_.push({
			type:"moveTo",
			x:c.x,
			y:c.y
			});this.currentX_=c.x;this.currentY_=c.y
		};
	i.lineTo=function(b,a){
		var c=this.getCoords_(b,a);this.currentPath_.push({
			type:"lineTo",
			x:c.x,
			y:c.y
			});this.currentX_=c.x;this.currentY_=c.y
		};i.bezierCurveTo=function(b,a,c,d,f,h){
		var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)
		};function Q(b,a,c,d){
		b.currentPath_.push({
			type:"bezierCurveTo",
			cp1x:a.x,
			cp1y:a.y,
			cp2x:c.x,
			cp2y:c.y,
			x:d.x,
			y:d.y
			});b.currentX_=d.x;b.currentY_=d.y
		}i.quadraticCurveTo=function(b,a,c,d){
		var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={
			x:this.currentX_+
			0.6666666666666666*(f.x-this.currentX_),
			y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)
			};Q(this,g,{
			x:g.x+(h.x-this.currentX_)/3,
			y:g.y+(h.y-this.currentY_)/3
			},h)
		};i.arc=function(b,a,c,d,f,h){
		c*=k;var g=h?"at":"wa",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({
			type:g,
			x:n.x,
			y:n.y,
			radius:c,
			xStart:o.x,
			yStart:o.y,
			xEnd:q.x,
			yEnd:q.y
			})
		};i.rect=function(b,a,c,d){
		this.moveTo(b,
			a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()
		};i.strokeRect=function(b,a,c,d){
		var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f
		};i.fillRect=function(b,a,c,d){
		var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f
		};i.createLinearGradient=function(b,
		a,c,d){
		var f=new D("gradient");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f
		};i.createRadialGradient=function(b,a,c,d,f,h){
		var g=new D("gradientradial");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g
		};i.drawImage=function(b){
		var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width="auto";b.runtimeStyle.height="auto";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){
			a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o
			}else if(arguments.length==
			5){
			a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o
			}else if(arguments.length==9){
			h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]
			}else throw Error("Invalid number of arguments");var q=this.getCoords_(a,c),t=[];t.push(" <g_vml_:group",' coordsize="',k*10,",",k*10,'"',' coordorigin="0,0"',' style="width:',10,"px;height:",10,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]){
			var E=[];E.push("M11=",
				this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",j(q.x/k),",","Dy=",j(q.y/k),"");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push("padding:0 ",j(p.x/k),"px ",j(p.y/k),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",E.join(""),", sizingmethod='clip');")
			}else t.push("top:",j(q.y/k),"px;left:",j(q.x/k),"px;");t.push(' ">','<g_vml_:image src="',b.src,
			'"',' style="width:',k*d,"px;"," height:",k*f,'px;"',' cropleft="',h/n,'"',' croptop="',g/o,'"',' cropright="',(n-h-l)/n,'"',' cropbottom="',(o-g-e)/o,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",t.join(""))
		};i.stroke=function(b){
		var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push("<g_vml_:shape",' filled="',!!b,'"',' style="position:absolute;width:',10,"px;height:",10,'px;"',' coordorigin="0 0" coordsize="',k*10," ",k*10,'"',' stroked="',
			!b,'"',' path="');var h={
			x:null,
			y:null
		},g={
			x:null,
			y:null
		},l=0;for(;l<this.currentPath_.length;l++){
			var e=this.currentPath_[l];switch(e.type){
				case "moveTo":a.push(" m ",j(e.x),",",j(e.y));break;case "lineTo":a.push(" l ",j(e.x),",",j(e.y));break;case "close":a.push(" x ");e=null;break;case "bezierCurveTo":a.push(" c ",j(e.cp1x),",",j(e.cp1y),",",j(e.cp2x),",",j(e.cp2y),",",j(e.x),",",j(e.y));break;case "at":case "wa":a.push(" ",e.type," ",j(e.x-this.arcScaleX_*e.radius),",",j(e.y-this.arcScaleY_*e.radius),
					" ",j(e.x+this.arcScaleX_*e.radius),",",j(e.y+this.arcScaleY_*e.radius)," ",j(e.xStart),",",j(e.yStart)," ",j(e.xEnd),",",j(e.yEnd));break
				}if(e){
				if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y
					}
			}a.push(' ">');if(b)if(typeof this.fillStyle=="object"){
			var m=this.fillStyle,r=0,n={
				x:0,
				y:0
			},o=0,q=1;if(m.type_=="gradient"){
				var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_),
				z=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0
					}else{
				var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={
					x:(p.x-h.x)/w,
					y:(p.y-h.y)/x
					};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o
				}var u=m.colors_;u.sort(function(ba,ca){
				return ba.offset-ca.offset
				});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){
				var T=u[l];S.push(T.offset*q+
					o+" "+T.color)
				}a.push('<g_vml_:fill type="',m.type_,'"',' method="none" focus="100%"',' color="',da,'"',' color2="',ea,'"',' colors="',S.join(","),'"',' opacity="',ga,'"',' g_o_:opacity2="',fa,'"',' angle="',r,'"',' focusposition="',n.x,",",n.y,'" />')
			}else a.push('<g_vml_:fill color="',d,'" opacity="',f,'" />');else{
			var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push("<g_vml_:stroke",' opacity="',f,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',aa(this.lineCap),
				'"',' weight="',K,'px"',' color="',d,'" />')
			}a.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",a.join(""))
		};i.fill=function(){
		this.stroke(true)
		};i.closePath=function(){
		this.currentPath_.push({
			type:"close"
		})
		};i.getCoords_=function(b,a){
		var c=this.m_;return{
			x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,
			y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v
			}
		};i.save=function(){
		var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)
		};i.restore=function(){
		O(this.aStack_.pop(),
			this);this.m_=this.mStack_.pop()
		};function ha(b){
		var a=0;for(;a<3;a++){
			var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false
				}return true
		}function A(b,a,c){
		if(!!ha(a)){
			b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))
				}
		}i.translate=function(b,a){
		A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)
		};i.rotate=function(b){
		var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)
		};i.scale=function(b,a){
		this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a,
			0],[0,0,1]],this.m_),true)
		};i.transform=function(b,a,c,d,f,h){
		A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)
		};i.setTransform=function(b,a,c,d,f,h){
		A(this,[[b,a,0],[c,d,0],[f,h,1]],true)
		};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){
		return new U
		};function D(b){
		this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]
		}D.prototype.addColorStop=function(b,a){
		a=P(a);this.colors_.push({
			offset:b,
			color:a.color,
			alpha:a.alpha
			})
		};function U(){}G_vmlCanvasManager=
	M;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U
	})();
